const rp = require('request-promise-native');

const util = require('../util');

/**
 * json 请求的转发器
 * 对接的系统需要对http头签名时，需要调用者自行签名，light-gateway不对报文做任何悠
 */

const logger = util.logger;

module.exports = {
  forward: (json)=>{
    let options = {
      method: 'POST',
      uri: json.request_url,
      body: json.request_content,
      headers: json.request_header,
      timeout: json.request_timeout,
      json: true // Automatically stringifies the body to JSON
    };

    if (options.headers){
      options.headers['content-type'] = 'application/json';
    }else{
      options.headers = {'content-type': 'application/json'};
    }

    logger.debug('forward json request: ', options);

    //由于此处使用的异步框架不同，所以创建了一个新的 Promise 对象，正常情况不应这样使用
    return new Promise((suc, fail) =>{
      rp(options).then((res) =>{
        logger.debug(`请求 ${options.uri} 返回：`, res);
        suc(res);
      })
      .catch((err) =>{
        logger.error(`请求 ${options.uri} 异常：`, err.error);
        fail(err);
      });
    });
  }
};